/*
 * Copyright 2011-2012 Rivoli team
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.googlecode.rivoli.reader.aluminum.library

import com.googlecode.aluminumproject.configuration.Configuration
import com.googlecode.aluminumproject.configuration.ConfigurationException
import com.googlecode.aluminumproject.libraries.AbstractLibrary
import com.googlecode.aluminumproject.libraries.LibraryInformation
import com.googlecode.aluminumproject.libraries.actions.ActionFactory
import com.googlecode.aluminumproject.utilities.ReflectionUtilities

class ElementsLibrary extends AbstractLibrary {
	static final String URL = 'http://rivoli.googlecode.com/elements'

	LibraryInformation information

	ElementsLibrary() {
		super(ReflectionUtilities.getPackageName(getClass()))
	}

	void initialise(Configuration configuration) throws ConfigurationException {
		Properties properties = new Properties()

		try {
			properties.load(Thread.currentThread().contextClassLoader.getResourceAsStream('library.properties'))
		} catch (IOException exception) {
			throw new ConfigurationException(exception, 'could not load library properties')
		}

		information = new LibraryInformation(URL, 'r', properties.getProperty('rivoli.version'), true, false, false)
	}

	ActionFactory getDynamicActionFactory(String name) {
		new ElementAction.Factory(name)
	}
}